class PollData:
    POLL_ACTIVE_OBJECT_TYPE = {
        'prefix': 'C.object and C.object.type',
        'suffix': '',
        'notation': '==',
        'name': 'Active Object Type',
        'items': [
            {'name': 'Mesh', 'item': 'MESH', },
            {'name': 'Curve', 'item': 'CURVE', },
            {'name': 'Hair Curves', 'item': 'CURVES', },
            {'name': 'Surface', 'item': 'SURFACE', },
            {'name': 'Metaball', 'item': 'META', },
            {'name': 'Text', 'item': 'FONT', },
            {'name': 'Point Cloud', 'item': 'POINTCLOUD', },
            {'name': 'Volume', 'item': 'VOLUME', },
            {'name': 'Grease Pencil', 'notation': 'in', 'item': '("GPENCIL","GREASEPENCIL")', "not_str": True},
            {'name': 'Armature', 'item': 'ARMATURE', },
            {'name': 'Lattice', 'item': 'LATTICE', },
            {'name': 'Empty', 'item': 'EMPTY', },
            {'name': 'Light', 'item': 'LIGHT', },
            {'name': 'Light Probe', 'item': 'LIGHT_PROBE', },
            {'name': 'Camera', 'item': 'CAMERA', },
            {'name': 'Speaker', 'item': 'SPEAKER', }, ],
    }

    POLL_MODE_TYPE = {
        'prefix': 'C.mode',
        'suffix': '',
        'notation': '==',
        'name': 'Object Mode',
        'items': [
            {'name': 'Mesh Edit', 'item': 'EDIT_MESH'},
            {'name': 'Text Edit', 'item': 'EDIT_TEXT'},
            {'name': 'Armature Edit', 'item': 'EDIT_ARMATURE'},
            {'name': 'Metaball Edit', 'item': 'EDIT_METABALL'},
            {'name': 'Lattice Edit', 'item': 'EDIT_LATTICE'},
            None,
            {'name': 'Pose', 'item': 'POSE'},
            {'name': 'Sculpt', 'item': 'SCULPT'},
            {'name': 'Weight Paint', 'item': 'PAINT_WEIGHT'},
            {'name': 'Vertex Paint', 'item': 'PAINT_VERTEX'},
            {'name': 'Texture Paint', 'item': 'PAINT_TEXTURE'},
            {'name': 'Image Paint', 'item': 'PAINT_TEXTURE'},
            {'name': 'Particle', 'item': 'PARTICLE'},
            {'name': 'Object', 'item': 'OBJECT'},
            None,
            {'name': 'Grease Pencil Paint', 'item': 'PAINT_GPENCIL'},
            {'name': 'Grease Pencil Edit', 'item': 'EDIT_GPENCIL'},
            {'name': 'Grease Pencil Sculpt', 'item': 'SCULPT_GPENCIL'},
            {'name': 'Grease Pencil Weight Paint', 'item': 'WEIGHT_GPENCIL'},
            {'name': 'Grease Pencil Vertex Paint', 'item': 'VERTEX_GPENCIL'},
            None,
            {'name': 'Curves Sculpt', 'item': 'SCULPT_CURVES'},
            {'name': 'Curve Edit', 'item': 'EDIT_CURVE'},
            {'name': 'Curves Edit', 'item': 'EDIT_CURVES'},
            {'name': 'Curves Sculpt', 'item': 'SCULPT_CURVES'},
            {'name': 'Surface Edit', 'item': 'EDIT_SURFACE'},
        ],
    }

    # 'prefix': '', 'suffix': '',
    # 'item': 'is_select_vert', 'name': '选中了顶点',
    POLL_MESH_SELECT_MODE = {
        'prefix': 'tool.mesh_select_mode[:]',
        'notation': '==',
        'name': 'Mesh Select Mode',
        'items': [
            {'prefix': 'tool.mesh_select_mode[0]', 'item': True, 'name': 'Vertex', },
            {'prefix': 'tool.mesh_select_mode[1]', 'item': True, 'name': 'Edge', },
            {'prefix': 'tool.mesh_select_mode[2]', 'item': True, 'name': 'Face', },
            None,
            {'item': [True, False, False], 'name': 'Only Vertex', },
            {'item': [False, True, False], 'name': 'Only Edge', },
            {'item': [False, False, True], 'name': 'Only Face', },
            None,
            {'item': [True, False, True], 'name': 'Only Vertex & Face', },
            {'item': [False, True, True], 'name': 'Only Edge & Face', },
            {'item': [True, True, False], 'name': 'Only Vertex & Edge', },
            {'item': [True, True, True], 'name': 'Vertex & Edge & Face', },
        ],
    }
    POLL_REGIONS_TYPE = {
        'prefix': 'C.region.type',
        'notation': '==',
        'name': 'Region Type',
        'items': [
            {'item': 'WINDOW', 'name': 'Window', },
            {'item': 'HEADER', 'name': 'Header', },
            {'item': 'CHANNELS', 'name': 'Channels', },
            {'item': 'TEMPORARY', 'name': 'Temporary', },
            {'item': 'EXECUTE', 'name': 'Execute Buttons', },
            {'item': 'UI', 'name': 'UI', },
            {'item': 'TOOLS', 'name': 'Tools', },
            {'item': 'TOOL_PROPS', 'name': 'Tool Properties', },
            {'item': 'PREVIEW', 'name': 'Preview', },
            {'item': 'HUD', 'name': 'Floating Region', },
            {'item': 'NAVIGATION_BAR', 'name': 'Navigation Bar', },
            {'item': 'FOOTER', 'name': 'Footer', },
            {'item': 'TOOL_HEADER', 'name': 'Tool Header', },
            {'item': 'XR', 'name': 'XR', },
        ],
    }
    POLL_SPACE_TYPE = {
        'prefix': 'C.space_data.type',
        'notation': '==',
        'name': 'Space Type',
        'items': [
            {'name': '3D Viewport', 'item': 'VIEW_3D', },
            {'name': 'UV/Image Editor', 'item': 'IMAGE_EDITOR', },
            {'name': 'Video Sequencer', 'item': 'SEQUENCE_EDITOR', },
            {'name': 'Movie Clip Editor', 'item': 'CLIP_EDITOR', },
            {'name': 'Dope Sheet', 'item': 'DOPESHEET_EDITOR', },
            {'name': 'Graph Editor', 'item': 'GRAPH_EDITOR', },
            {'name': 'Nonlinear Animation', 'item': 'NLA_EDITOR', },
            {'name': 'Top Bar', 'item': 'TOPBAR', },
            {'name': 'Status Bar', 'item': 'STATUSBAR', },
            {'name': 'Outliner', 'item': 'OUTLINER', },
            {'name': 'Properties', 'item': 'PROPERTIES', },
            {'name': 'File Browser', 'item': 'FILE_BROWSER', },
            {'name': 'Spreadsheet', 'item': 'SPREADSHEET', },
            {'name': 'Preferences', 'item': 'PREFERENCES', },
            {'name': 'Empty', 'item': 'EMPTY', },
            None,
            {'name': 'Info', 'item': 'INFO', },
            {'name': 'Text Editor', 'item': 'TEXT_EDITOR', },
            {'name': 'Python Console', 'item': 'CONSOLE', },
            None,
            {'name': 'Node Editor', 'item': 'NODE_EDITOR', },
            {'name': 'Geometry Node', 'item': 'NODE_EDITOR',
             'suffix': 'and C.space_data.tree_type == "GeometryNodeTree"', },
            {'name': 'Compositor Node', 'item': 'NODE_EDITOR',
             'suffix': 'and C.space_data.tree_type == "CompositorNodeTree"', },
            {'name': 'Shader Node', 'item': 'NODE_EDITOR',
             'suffix': 'and C.space_data.tree_type == "ShaderNodeTree"', },
            {'name': 'Texture Node', 'item': 'NODE_EDITOR',
             'suffix': 'and C.space_data.tree_type == "TextureNodeTree"', },
        ],
    }
    POLL_OTHER = {
        'prefix': '',
        'suffix': '',
        'notation': '==',
        'name': 'Other',
        'items': [
            {'item': 'and',
             'name': 'and',
             'notation': '',
             'parentheses': False,
             'not_str': True},
            {'item': 'or',
             'name': 'or',
             'notation': '',
             'parentheses': False,
             'not_str': True},
            {'item': 'not',
             'name': 'not',
             'notation': '',
             'parentheses': False,
             'not_str': True},
            None,
            {'item': 'len(C.selectable_objects)',
             'name': 'Is Selected Object',
             'notation': '',
             'parentheses': False,
             'not_str': True},
            None,
            {'item': 'tool.use_uv_select_sync',
             'name': 'UV Sync Selection',
             'notation': '',
             'parentheses': False,
             'not_str': True},
        ],
    }
    POLL_RENDER = {
        'prefix': 'C.scene.render.engine',
        'suffix': '',
        'notation': '==',
        'name': 'Render engine',
        'items': [
            {'name': 'EEVEE', 'notation': 'in', 'item': '("BLENDER_EEVEE_NEXT", "BLENDER_EEVEE")', 'not_str': True},
            {'name': 'CYCLE', 'item': '"CYCLES"', 'not_str': True},
            {'name': 'Workbench', 'item': '"BLENDER_WORKBENCH"', 'not_str': True},
        ]
    }

    POLL_ALL_LIST = [
        POLL_RENDER,
        POLL_MODE_TYPE,
        POLL_ACTIVE_OBJECT_TYPE,
        POLL_MESH_SELECT_MODE,
        None,
        POLL_SPACE_TYPE,
        POLL_REGIONS_TYPE,
        POLL_OTHER
    ]
